import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.Objects;

/**
 * 1869.那种连续子字符串更长
 * 给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串，返回 true ；否则，返回 false 。
 *
 * 例如，s = "110100010" 中，由 1 组成的最长连续子字符串的长度是 2 ，由 0 组成的最长连续子字符串的长度是 3 。
 * 注意，如果字符串中不存在 0 ，此时认为由 0 组成的最长连续子字符串的长度是 0 。字符串中不存在 1 的情况也适用此规则。
 */
public class CheckZeroOnes {

    @Test
    public void test1() {
        Assertions.assertTrue(checkZeroOnes("1101"));
    }

    @Test
    public void test2() {
        Assertions.assertFalse(checkZeroOnes("111000"));
    }

    @Test
    public void test3() {
        Assertions.assertFalse(checkZeroOnes("110100010"));
    }


    public boolean checkZeroOnes(String s) {

        int maxOneLength = 0;
        int maxZeroLength = 0;

        for (int i = 0, oneLength = 0, zeroLength = 0; i < s.length(); i++) {

            String bitStr = s.substring(i, i + 1);

            if (Objects.equals("1", bitStr)) {
                oneLength++;
                zeroLength = 0;
                maxOneLength = Math.max(maxOneLength, oneLength);
            } else if (Objects.equals("0", bitStr)) {
                zeroLength++;
                oneLength = 0;
                maxZeroLength = Math.max(maxZeroLength, zeroLength);
            }


        }
        return maxOneLength > maxZeroLength;
    }
}
